home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / EVISION1.ARJ / TWINDOW.HPP < prev    next >
C/C++ Source or Header  |  1992-05-19  |  16KB  |  249 lines

  1. #if !defined (TWINDOW)                    // To prevent multiple declarations
  2. #define TWINDOW
  3.  
  4. // ---- Library Header Files ------------------------------------------------
  5.  
  6. #include <conio.h>
  7. #include <stdio.h>
  8.  
  9.  
  10. // ---- Local Macros --------------------------------------------------------
  11.  
  12. #define WSAME -1
  13.  
  14.  
  15. // ---- Header Files Of Other References ------------------------------------
  16.  
  17. #include "tstatusline.hpp"
  18.  
  19.  
  20. // ---- Type Definitions ----------------------------------------------------
  21.  
  22. struct ttext                                     // Definition of static text
  23. {
  24.    int        row ;                                  // Row of text in window
  25.    int        col ;                                  // Col of text in window
  26.    char  huge *text ;                                          // Ptr to text
  27.    int        format ;                            // Format specifier of text
  28.    int        fore ;                              // Foreground color of text
  29.    int        back ;                              // Background color of text
  30.    ttext huge *textnext ;                         // Next static text in link
  31. } ;
  32.  
  33.  
  34. struct tbutton                                      // Definition of a button
  35. {
  36.    char    huge *buttonname ;                               // Name of button
  37.    int          buttonkey ;              // Key code that 'pushes' the button
  38.    int          buttonrow ;                           // Button row in window
  39.    int          buttoncol ;                           // Button col in window
  40.    int          buttonavail ;         // 1: Button is available  0: Not avail
  41.    char    huge *buttonsltext ;            // Statusline text for this button
  42.    tbutton huge *buttonnext ;                   // Ptr to next button in link
  43.    tbutton huge *buttonprevious ;           // Ptr to previous button in link
  44. } ;
  45.  
  46.  
  47. struct tfield                                 // Definition of an input field
  48. {
  49.    int          fieldnumber ;                    // ID # of input field [1..[
  50.    char   huge  *fieldanswer ;                    // Ptr to buffer for answer
  51.    int          fieldanswerlength ;                   // Max length of answer
  52.    int          fieldlength ;                        // Length of input field
  53.    int          fieldrow ;                          // Row of field in window
  54.    int          fieldcol ;                          // Col of field in window
  55.    int          fieldbackcolor ;              // Input field background color
  56.    int          fieldforecoloron ;     // Input field active foreground color
  57.    int          fieldforecoloroff ;  // Input field inactive foreground color
  58.    int          fieldftr ;                     // Filter used for input (0-4)
  59.    char   huge  *fieldxtraftr ;              // Extra chars to use for filter
  60.    int          fieldcapsflag ;                // If '1', switch to uppercase
  61.    int          fieldrestoreflag ;              // If '1', screen is restored
  62.    int          fieldnullflag ;            // If '1', can enter a null string
  63.    char   huge  *fieldsltext ;              // Statusline text for this field
  64.    tfield huge  *fieldnext ;                     // Ptr to next field in link
  65.    tfield huge  *fieldprevious ;             // Ptr to previous field in link
  66. } ;
  67.  
  68.  
  69. // ---- Class Declarations --------------------------------------------------
  70.  
  71. class twindow
  72. {
  73.    char    huge *winunder ;      // Ptr to buffer to save screen under window
  74.    char    huge *winrshadow ;        // Ptr to buffer to save right of window
  75.    char    huge *winrshadowd ;             // Ptr to buffer with right shadow
  76.    char    huge *winbshadow ;       // Ptr to buffer to save bottom of window
  77.    char    huge *winbshadowd ;            // Ptr to buffer with bottom shadow
  78.    char    huge *winfront ;         // Ptr to save window content when hidden
  79.    char    huge *wintitle ;                            // Ptr to window title
  80.    char    huge *winhelp ;          // Pointer to context sensitive help text
  81.    ttext   huge *wintextfirst ;                   // Ptr to first static text
  82.    ttext   huge *wintextlast ;                     // Ptr to last static text
  83.    twindow huge *winnext ;                             // Next window in link
  84.    twindow huge *winprevious ;                     // Previous window in link
  85.    tstatusline huge *winslptr ;          // Ptr to an instantiated statusline
  86.    int          winrow ;                  // Window position (topleft corner)
  87.    int          wincol ;                  // Window position (topleft corner)
  88.    int          winheight ;                          // Window height in rows
  89.    int          winwidth ;                         // Window width in columns
  90.    int          winbackcolor ;                     // Window background color
  91.    int          winforecolor ;                     // Window foreground color
  92.    int          wincurrow ;                      // Cursor position in window
  93.    int          winstatus ;                       // 0:closed 1:open 2:hidden
  94.  
  95.    int          dfieldanswerlength ;      // Default maximum length of answer
  96.    int          dfieldlength ;                  // Default input field length
  97.    int          dfieldbackcolor ;           // Default field background color
  98.    int          dfieldforecoloron ;         // Default field foreground color
  99.    int          dfieldforecoloroff ;
  100.    int          dfieldftr ;            // Default filter used for input (0-4)
  101.    char    huge *dfieldxtraftr ;    // Default extra chars for current filter
  102.    int          dfieldcapsflag ;              // Default switch for uppercase
  103.    int          dfieldrestoreflag ;            // Default restore after input
  104.    int          dfieldnullflag ;                  // Default null string flag
  105.    int          fieldcount ;                // Number of input fields created
  106.    tfield  huge *fieldfirst ;                          // First field in link
  107.    tfield  huge *fieldlast ;                            // Last field in link
  108.  
  109.    int          buttonbackcolor ;      // Background color of all the buttons
  110.    int          buttonforecoloron ;      // Foreground color of active button
  111.    int          buttonforecoloroff ;  // Foreground color of inactive buttons
  112.    int          buttonhighcolor ;       // Highlight color of all the buttons
  113.    tbutton huge *buttonfirst ;                        // First button in link
  114.    tbutton huge *buttonlast ;                          // Last button in link
  115.  
  116.    int          screenheight ;                        // Current screenheight
  117.    int          screenwidth ;                          // Current screenwidth
  118.  
  119.    public:
  120.  
  121.         far twindow () ;                                       // Constructor
  122.         far ~twindow () ;                                       // Destructor
  123.  
  124.    int  far wingetscreenheight () ;                   // Return screen height
  125.    int  far wingetscreenwidth () ;                     // Return screen width
  126.    void far winsetpos                           // Set window screen position
  127.       ( int row,                                       // Top left corner row
  128.         int col ) ;                                    // Top left corner col
  129.    int  far wingetrow () ;                           // Return window row pos
  130.    int  far wingetcol () ;                           // Return window col pos
  131.    void far winsetsize                                     // Set window size
  132.       ( int height,                  // Height of window including the frames
  133.         int width ) ;                 // Width of window including the frames
  134.    int  far wingetheight () ;                         // Return window height
  135.    int  far wingetwidth () ;                           // Return window width
  136.    void far winsetcolors                                 // Set window colors
  137.       ( int back=LIGHTGRAY,                     // Background color of window
  138.         int fore=WHITE ) ;                      // Foreground color of window
  139.    void far winsettitle                                   // Set window title
  140.       ( char huge *title ) ;                           // Ptr to window title
  141.    void far winsethelp                                    // Set help pointer
  142.       ( char huge *ptrtohelp ) ;             // Ptr to context sensitive help
  143.    void far winsetslptr                   // Match window with the statusline
  144.       ( tstatusline huge *slptr ) ;                  // Ptr to the statusline
  145.    void far winopen () ;                 // Open window with current settings
  146.    void far winclose () ;                     // Close window (Perform reset)
  147.    void far winclear                               // Clear an area in window
  148.       ( int left=1,                                        // Top left corner
  149.         int top=1,
  150.         int right=999,                                 // Bottom right corner
  151.         int bottom=999 ) ;
  152.    void far winwrite                        // Writes volatile text to window
  153.       ( char huge *text,                                // Text to be written
  154.         int  row=-1,                               // Window postion for text
  155.         int  col=1,
  156.         int  format=0,                    // 0:none 1:left 2:centered 3:right
  157.         int  fore=-1,                                        // Color of text
  158.         int  back=-1 ) ;
  159.    void far winswrite                         // Writes static text to window
  160.       ( char huge *text,                                // Text to be written
  161.         int  row=-1,                               // Window postion for text
  162.         int  col=1,
  163.         int  format=0,                    // 0:none 1:left 2:centered 3:right
  164.         int  fore=-1,                                        // Color of text
  165.         int  back=-1 ) ;
  166.    void far wintext                             // Display big text in window
  167.       ( char huge *textptr,                    // Ptr to text to be displayed
  168.         int  fore=-1,                      // Normal foreground color of text
  169.         int  high=YELLOW,                          // Highlight color of text
  170.         int  helpflag=1 ) ;         // 0: Don't use 'getkey'  1: Use 'getkey'
  171.    void far wintextfile                             // Disp. a disk text file
  172.       ( char huge *path,                              // Path to file to view
  173.         int  fore=-1,                              // Foreground color to use
  174.         int  high=YELLOW ) ;                        // Highlight color to use
  175.    void far winmove                           // Moves window to new position
  176.       ( int row,                            // New position of topleft corner
  177.         int col ) ;
  178.    void far winscroll                            // Moves window 1 space only
  179.       ( char direction ) ;               // U: up  D: down  L: left  R: right
  180.    int  far wininput () ;         // Get input from window fields and buttons
  181.  
  182.    void far fieldsetlengths              // Set max lengths of field & answer
  183.       ( int answer,                  // Default max length of answer in chars
  184.         int field ) ;                 // Default max lenght of field in chars
  185.    void far fieldsetcolors                                // Set field colors
  186.       ( int back=-1,                        // Default background field color
  187.         int foreon=WHITE,                   // Default foreground field color
  188.         int foreoff=DARKGRAY ) ;
  189.    void far fieldsetftr                          // Set filter used for input
  190.       ( int ftrtype,                                         // Filter number
  191.         char huge *extra="" ) ;              // Added chars to current filter
  192.    void far fieldsetattrib                            // Set other attributes
  193.       ( int caps=0,                                           // Caplock flag
  194.         int restore=0,                                        // Restore flag
  195.         int empty=1 ) ;                                   // Null string flag
  196.    void far fieldcreate                              // Create an input field
  197.       ( int row,                                        // Row of field input
  198.         int col,                                     // Column of field input
  199.         char huge *defaultasw="",                           // Default answer
  200.         char huge *sltext="" ) ;            // Statusline text for this field
  201.    int  far fieldinput                            // Get input from one field
  202.       ( int fieldnb=1 ) ;                          // Field to get input from
  203.    void far fieldsetasw                    // Copy default answer for a field
  204.       ( char huge *answer,                   // Default answer for this field
  205.         int fieldnb=1 ) ;                        // ID number of field to set
  206.    void far fieldgetasw                   // Copy answer of a field somewhere
  207.       ( char huge *dest,                      // Destination to copy field to
  208.         int fieldnb=1 ) ;                        // ID number of field to get
  209.  
  210.    void far buttonsetcolors                 // Set colors use for all buttons
  211.       ( int back=GREEN,            // Color used to draw background of button
  212.         int foreon=WHITE,         // Colors used to draw foreground of button
  213.         int foreoff=BLACK,
  214.         int high=YELLOW ) ;            // Color used to draw the button's key
  215.    void far buttoncreate                      // Creates and display a button
  216.       ( int  row,                                    // Row to display button
  217.         int  col,                                    // Col to display button
  218.         char huge *name,                                    // Name of button
  219.         int  buttonkey,                               // Key to 'push' button
  220.         char huge *sltext="" ) ;           // Statusline text for this button
  221.    void far buttonpush                             // Push one of the buttons
  222.       ( int buttonkey ) ;                              // Button to be pushed
  223.    int  far buttoninput                              // Activate button input
  224.       ( int inchar=0,                                           // User input
  225.         int first=1,   // 1: Make 1st button alive  0: Make last button alive
  226.         int tabexit=0 ) ;      // 1: Exit if TAB goes past 1st or last button
  227.    void far buttonsetavail               // Set availability flag of a button
  228.       ( int buttonkey,                                    // Button to be set
  229.         int state ) ;                       // 1: available  0: not available
  230.  
  231.    private:
  232.  
  233.    void far buttondraw                                       // Draw a button
  234.       ( int buttonkey,                                      // Button to draw
  235.         int alive=0,                                // 1: Alive  0: Not Alive
  236.         int pushed=0 ) ;                          // 0: Normal pos  1: Pushed
  237.    tbutton huge* buttonexist                    // Check if this button exist
  238.       ( int buttonkey ) ;                           // Key of button to check
  239.    void far winsavescreen () ;        // Save screen under window and shadows
  240.    void far winrestorescreen () ;               // Restore screen and shadows
  241.    void far winhide () ;                                       // Hide window
  242.    void far winunhide () ;                                   // Unhide window
  243. } ;
  244.  
  245.  
  246. // ---- End Header File -----------------------------------------------------
  247.  
  248. #endif
  249.